# -*- coding: utf-8 -*-

import pygtk
pygtk.require("2.0")
import gtk
from pysqlite2 import dbapi2 as sqlite
import os.path

if not os.path.exists('DBestoque.db'):
	#se não existir, cria o banco de dados
	print 'Banco não encontrado'
	print 'Criando novo banco de dados'
	sqlConnect = sqlite.connect('DBestoque.db')
	sqlCursor = sqlConnect.cursor()
	sql = """
CREATE TABLE produtos (
codigo INT NOT NULL,
descricao CHAR(100),
marca CHAR(40),
modelo CHAR(40),
valor CHAR(40),
quantidade INT,
minimo INT,
PRIMARY KEY ( codigo )
);
"""
	sqlCursor.execute(sql)
	sqlConnect.commit()
	
	" Inclui o primeito código (0) no Banco "
	sql = "INSERT INTO produtos (codigo) VALUES (0)"
	sqlCursor.execute(sql)
	sqlConnect.commit()
	


class estoque:
	
	def __init__(self):
		self.janela = gtk.Window(gtk.WINDOW_TOPLEVEL)
		self.janela.set_position(gtk.WIN_POS_CENTER)
		self.janela.set_resizable(False)
		self.janela.set_title('Estoque em PyGTK')
		self.janela.set_size_request(780, 500)
		self.janela.connect("delete_event", self.deleteEvento)
		self.janela.connect("destroy", self.sair)
		
		self.fixed = gtk.Fixed()
		self.janela.add(self.fixed)
		
		### SQLite
		" Criando conexao e cursor "
		self.sqlConnect = sqlite.connect('DBestoque.db')
		self.sqlCursor = self.sqlConnect.cursor()
		
		### Tollbar
		self.barra = gtk.Toolbar()
		self.barra.set_size_request(780,55)
		self.barra.set_style(gtk.TOOLBAR_BOTH)
		self.fixed.put(self.barra, 0,0)
		
		" Novo "
		iconNovo = gtk.Image()
		iconNovo.set_from_stock("gtk-new", gtk.ICON_SIZE_LARGE_TOOLBAR)
		self.btNovo = self.barra.append_item('Novo' , None, None, iconNovo, None, None)
		self.btNovo.set_size_request(100,50)
		self.btNovo.connect("clicked", self.formCadastro)
		
		self.barra.append_space()
		
		" Pesquisar "
		iconPesquisar = gtk.Image()
		iconPesquisar.set_from_stock("gtk-find", gtk.ICON_SIZE_LARGE_TOOLBAR)
		self.btPesquisar = self.barra.append_item('Procurar' , None, None, iconPesquisar, None, None)
		self.btPesquisar.set_size_request(100,50)
		self.btPesquisar.connect("clicked", self.formPesquisa)
		
		self.barra.append_space()
		
		" Principal "
		iconPrincipal = gtk.Image()
		iconPrincipal.set_from_stock("gtk-home", gtk.ICON_SIZE_LARGE_TOOLBAR)
		self.btPrincipal = self.barra.append_item('Principal' , None, None, iconPrincipal, None, None)
		self.btPrincipal.set_size_request(100,50)
		self.btPrincipal.connect("clicked", self.atualizaChecaProduto)
		self.btPrincipal.connect("clicked", self.atualizaChecaMinimo)
		
		###   Notebook
		self.notebook = gtk.Notebook()
		self.notebook.set_size_request(780, 450)
		self.notebook.set_show_tabs(False)
		self.fixed.put(self.notebook, 0, 55)
		
		### Aba 1
		" Aba 1 - Exibe os produtos"
		self.aba1 = gtk.Fixed()
		self.aba1.put(gtk.Label("Produtos cadastrados:"), 10, 10)
		self.aba1.put(gtk.Label("Produtos em falta:"), 10, 30)
		
		" criando um scrolledWindow "
		self.treeview(None)
		scrollAba1 = gtk.ScrolledWindow()
		scrollAba1.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) 
		scrollAba1.set_size_request(755,300)
		self.aba1.put(scrollAba1, 10,70)
		" Criando um TreeView "
		self.treevAba1 = gtk.TreeView()
		self.treevAba1.set_model(self.model)
		scrollAba1.add(self.treevAba1)
		self.treevAba1.append_column(self.col1)
		self.treevAba1.append_column(self.col2)
		self.treevAba1.append_column(self.col3)
		self.treevAba1.append_column(self.col4)
		self.treevAba1.append_column(self.col5)
		self.treevAba1.append_column(self.col6)
		
		
		self.notebook.append_page(self.aba1)
		"Pega o numero de produtos cadastrados"
		self.checaProduto(None)
		self.checaMinimo(None)
		
		
		###Aba 2 - Formulário de cadastro
		" Aba 2 - Formulário de cadastro"
		self.aba2 = gtk.Fixed()
		self.formCadastro(None)
		self.notebook.append_page(self.aba2)
		""" ITENS """
		" Decrição do produto "
		self.aba2.put(gtk.Label("Descrição do produto:"), 10,10)
		self.cadDescricao = gtk.Entry()
		self.cadDescricao.set_size_request(300,20)
		self.aba2.put(self.cadDescricao, 10, 30)
		imagem = gtk.Image()
		imagem.set_from_stock("gtk-apply", gtk.ICON_SIZE_SMALL_TOOLBAR)
		self.aba2.put(imagem, 315, 30)
		" Marca "
		self.aba2.put(gtk.Label("Marca:"), 10, 70)
		self.cadMarca = gtk.Entry()
		self.cadMarca.set_size_request(300,20)
		self.aba2.put(self.cadMarca, 10, 90)
		" Modelo "
		self.aba2.put(gtk.Label("Modelo:"), 10, 130)
		self.cadModelo = gtk.Entry()
		self.cadModelo.set_size_request(300,20)
		self.aba2.put(self.cadModelo, 10, 150)
		" Valor "
		self.aba2.put(gtk.Label("Valor:"), 10, 190)
		self.cadValor = gtk.Entry()
		self.cadValor.set_size_request(100,20)
		self.aba2.put(self.cadValor, 10, 210)
		imagem = gtk.Image()
		imagem.set_from_stock("gtk-apply", gtk.ICON_SIZE_SMALL_TOOLBAR)
		self.aba2.put(imagem, 115, 210)
		" Quantidade em estoque: "
		self.aba2.put(gtk.Label("Quantidade em estoque:"), 10, 250)
		self.cadQuantidade = gtk.Entry()
		self.cadQuantidade.set_size_request(100,20)
		self.aba2.put(self.cadQuantidade, 10, 270)
		imagem = gtk.Image()
		imagem.set_from_stock("gtk-apply", gtk.ICON_SIZE_SMALL_TOOLBAR)
		self.aba2.put(imagem, 115, 270)
		" Minimo em estoque: "
		self.aba2.put(gtk.Label("Minimo em estoque:"), 10, 310)
		self.cadMinimo = gtk.Entry()
		self.cadMinimo.set_size_request(100,20)
		self.aba2.put(self.cadMinimo, 10, 330)
		imagem = gtk.Image()
		imagem.set_from_stock("gtk-apply", gtk.ICON_SIZE_SMALL_TOOLBAR)
		self.aba2.put(imagem, 115, 330)
		
		" Botão Salvar "
		self.btCadSalvar = gtk.Button(stock=gtk.STOCK_SAVE)
		self.btCadSalvar.connect("clicked", self.cadastrar)
		self.aba2.put(self.btCadSalvar, 20, 370)
		
		" Informação sobre cadastro "
		cadFrame = gtk.Frame()
		cadFrame.set_size_request(150,150)
		cadFrame.set_label("Informação")
		cadInf = gtk.Label("Os campos que \n contém a imagem \n abaixo são \n Obrigratórios")
		self.aba2.put(cadInf, 420, 270)
		imagem = gtk.Image()
		imagem.set_from_stock("gtk-apply", gtk.ICON_SIZE_SMALL_TOOLBAR)
		self.aba2.put(imagem, 470, 340)
		self.aba2.put(cadFrame, 400, 250)
		
		
		
		###Aba 3 - Formulário de Pesquisa
		" Aba 3 - Formulário de pesquisa"
		self.aba3 = gtk.Fixed()
		self.notebook.append_page(self.aba3)
		
		" Decrição do produto "
		self.aba3.put(gtk.Label("Descrição do produto:"), 10,10)
		self.pesDescricao = gtk.Entry()
		self.pesDescricao.set_size_request(300,20)
		self.aba3.put(self.pesDescricao, 10, 30)
		
		" Frame com dica para pesquisa "
		frameAjudaPes = gtk.Frame()
		frameAjudaPes .set_size_request(300,200)
		frameAjudaPes .set_label("Informação")
		self.aba3.put(frameAjudaPes, 50, 130)
		self.aba3.put(gtk.Label('Digite parte do nome do produto para \npesquisar todos os produtos com este \nnome em comum.'), 60, 150)
		self.aba3.put(gtk.Label('Exemplo, digitando "sapa", todos os produtos \ncom a palavra "sapa" serão exibidos no \nresultado da pesquisa, como "Sapato"'), 60, 200)
		self.aba3.put(gtk.Label('Para exibir todos os produtos cadastrados \ndeixe o campo de pesquisa em branco \ne clique em pesquisar'), 60, 270)
		
		" Botão Pesquisar "
		self.btPesquisar = gtk.Button(stock=gtk.STOCK_FIND)
		self.btPesquisar.connect("clicked", self.pesquisar)
		#self.btPesquisar.connect("clicked", self.treeview)
		self.aba3.put(self.btPesquisar, 20, 70)
		
		
		###Aba 4 - Resultado da pesquisa
		" Aba 4 "
		self.aba4 = gtk.Fixed()
		self.notebook.append_page(self.aba4)
		
		" criando um scrolledWindow "
		scrollAba4 = gtk.ScrolledWindow()
		scrollAba4.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) 
		scrollAba4.set_size_request(755,350)
		self.aba4.put(scrollAba4, 10,10)
		" Criando um TreeView "
		self.treeview(None)
		self.treevAba4 = gtk.TreeView()
		self.treevAba4.set_model(self.model)
		scrollAba4.add(self.treevAba4)
		self.treevAba4.append_column(self.col1)
		self.treevAba4.append_column(self.col2)
		self.treevAba4.append_column(self.col3)
		self.treevAba4.append_column(self.col4)
		self.treevAba4.append_column(self.col5)
		self.treevAba4.append_column(self.col6)
		
		" Criando Botões para controle de dados "
		" Deletar "
		self.btDelete = gtk.Button(stock=gtk.STOCK_DELETE)
		self.btDelete.set_size_request(100,30)
		self.btDelete.connect("clicked", self.delete)
		self.aba4.put(self.btDelete, 20, 390)
		" Alterar "
		self.btAltera = gtk.Button(stock=gtk.STOCK_EDIT)
		self.btAltera.set_size_request(100,30)
		self.btAltera.connect("clicked", self.formAltera)
		self.aba4.put(self.btAltera, 140, 390)
		" Entrada de Produtos "
		self.btAdd = gtk.Button(stock=gtk.STOCK_ADD)
		self.btAdd.set_size_request(100,30)
		self.btAdd.connect("clicked", self.popupAdd)
		self.aba4.put(self.btAdd, 260, 390)
		"Saida de Produtos "
		self.btRemove = gtk.Button(stock=gtk.STOCK_REMOVE)
		self.btRemove.set_size_request(100,30)
		self.btRemove.connect("clicked", self.popupRemove)
		self.aba4.put(self.btRemove, 380, 390)
		
		
		###Aba 5 - Formulário de altereção
		" Aba 2 - Formulário de alteração"
		self.aba5 = gtk.Fixed()
		self.notebook.append_page(self.aba5)
		""" ITENS """
		" Decrição do produto "
		self.aba5.put(gtk.Label("Descrição do produto:"), 10,10)
		self.altDescricao = gtk.Entry()
		self.altDescricao.set_size_request(300,20)
		self.aba5.put(self.altDescricao, 10, 30)
		" Marca "
		self.aba5.put(gtk.Label("Marca:"), 10, 70)
		self.altMarca = gtk.Entry()
		self.altMarca.set_size_request(300,20)
		self.aba5.put(self.altMarca, 10, 90)
		" Modelo "
		self.aba5.put(gtk.Label("Modelo:"), 10, 130)
		self.altModelo = gtk.Entry()
		self.altModelo.set_size_request(300,20)
		self.aba5.put(self.altModelo, 10, 150)
		" Valor "
		self.aba5.put(gtk.Label("Valor:"), 10, 190)
		self.altValor = gtk.Entry()
		self.altValor.set_size_request(100,20)
		self.aba5.put(self.altValor, 10, 210)
		" Quantidade em estoque: "
		self.aba5.put(gtk.Label("Quantidade em estoque:"), 10, 250)
		self.altQuantidade = gtk.Entry()
		self.altQuantidade.set_size_request(100,20)
		self.aba5.put(self.altQuantidade, 10, 270)
		" Minimo em estoque: "
		self.aba5.put(gtk.Label("Minimo em estoque:"), 10, 310)
		self.altMinimo = gtk.Entry()
		self.altMinimo.set_size_request(100,20)
		self.aba5.put(self.altMinimo, 10, 330)
		
		" Botão Salvar "
		self.btAltSalvar = gtk.Button(stock=gtk.STOCK_SAVE)
		self.btAltSalvar.connect("clicked", self.salvarAlteracao)
		self.aba5.put(self.btAltSalvar, 20, 370)
		
		
		
		self.janela.show_all()
	
	def formCadastro(self, widget):
		self.notebook.set_current_page(1)
	
	def formPesquisa(self, widget):
		self.notebook.set_current_page(2)
	
	def chamaAba1(self, widget):
		self.notebook.set_current_page(0)
	
	def treeview(self, widget):
		self.model = gtk.ListStore(str, str, str, str, str, str, str)
		self.col1 = gtk.TreeViewColumn("Código", gtk.CellRendererText(), text=0)
		self.col2 = gtk.TreeViewColumn("Descrição", gtk.CellRendererText(), text=1)
		self.col3 = gtk.TreeViewColumn("Marca", gtk.CellRendererText(), text=2)
		self.col4 = gtk.TreeViewColumn("Modelo", gtk.CellRendererText(), text=3)
		self.col5 = gtk.TreeViewColumn("Valor", gtk.CellRendererText(), text=4)
		self.col6 = gtk.TreeViewColumn("Quantidade", gtk.CellRendererText(), text=5)
		self.col7 = gtk.TreeViewColumn("Minimo", gtk.CellRendererText(), text=6)
		self.col1.set_min_width(50)
		self.col2.set_min_width(250)
		self.col3.set_min_width(125)
		self.col4.set_min_width(100)
		self.col5.set_min_width(100)
		self.col6.set_min_width(100)
		self.col7.set_min_width(100)
	
	
	def cadastrar(self, widget):
		" Pegando o Código "
		sql = "SELECT MAX(codigo) AS codigo FROM produtos"
		self.sqlCursor.execute(sql)
		dados = self.sqlCursor.fetchone()
		codigo = dados[0]
		codigo = codigo + 1
		
		" pegando os valores do formulario "
		descricao = self.cadDescricao.props.text
		marca = self.cadMarca.props.text
		modelo = self.cadModelo.props.text
		valor = self.cadValor.props.text
		quantidade = self.cadQuantidade.props.text
		minimo = self.cadMinimo.props.text
		
		try:
			valorInt = complex(valor)
			quantidadeInt = int(quantidade)
			minimoInt = int(minimo)
		except ValueError:
			msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Preencha os campos corretamente')
			msg.set_position(gtk.WIN_POS_CENTER)
			resposta = msg.run()
			msg.destroy()
		else:
			" Limpando os campos do formulario de cadastro "
			self.cadDescricao.props.text = ""
			self.cadMarca.props.text = ""
			self.cadModelo.props.text = ""
			self.cadValor.props.text = ""
			self.cadQuantidade.props.text = ""
			self.cadMinimo.props.text = ""
			
			" Verifica de os campos obrigatorios foram preenchidos "
			if descricao != "" and valor != "" and quantidade != "" and minimo != "":
				" Cadastrando novo produto "
				sql = """INSERT INTO 
				produtos (codigo, descricao, marca, modelo, valor, quantidade, minimo)
				VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s')
				""" % (codigo, descricao, marca, modelo, valor, quantidade, minimo)
				self.sqlCursor.execute(sql)
				"Verifica se foi cadastrado "
				if self.sqlConnect.commit() == None:
					dialogo= gtk.MessageDialog(self.janela, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_CLOSE)
					dialogo.set_markup("Produto cadastrado com sucesso.") # texto formatado nos padrões pango
					dialogo.run()
					dialogo.destroy()
			else:
				erro= gtk.MessageDialog(self.janela, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK)
				erro.set_markup("Você deve informar todos os campos Obrigatorios.") # texto formatado nos padrões pango
				erro.run()
				erro.destroy()
	
	def pesquisar(self, widget):
		self.treeview(None)
		" Faz a pesquisa no Bando de Dados "
		produto = self.pesDescricao.props.text
		sql = "SELECT * FROM produtos WHERE descricao LIKE '%" + produto + "%' ORDER BY descricao"
		self.tempSQL = sql
		self.pesDescricao.props.text = ""
		self.sqlCursor.execute(sql)
		dados = self.sqlCursor.fetchall()
		" Chama a aba4 do Notebook "
		self.notebook.set_current_page(3)
		" adiciona os dados da pesquisa ao TreeView "
		model = self.treevAba4.get_model()
		model.clear()
		for linha in dados:
			model.append([linha[0], linha[1], linha[2], linha[3], linha[4], linha[5], linha[6]])
		
	
	def checaProduto(self, widget):
		" checa a quantidade de produtos cadastrados "
		sql = "SELECT COUNT(codigo) FROM produtos"
		self.sqlCursor.execute(sql)
		contCod = self.sqlCursor.fetchone()
		self.labelContCod = gtk.Label()
		cod = str(contCod[0])
		self.labelContCod.set_text(cod)
		self.aba1.put(self.labelContCod, 160,10)
		self.notebook.set_current_page(0)
	
	def checaMinimo(self, widget):
		self.aba = 1
		" checa a quantidade de produtos cadastrados com valor igual ou menor que o minimo"
		sql = "SELECT COUNT(codigo) FROM produtos WHERE quantidade < minimo+1"
		self.sqlCursor.execute(sql)
		contCodMin = self.sqlCursor.fetchone()
		self.labelContCodMin = gtk.Label()
		cod = str(contCodMin[0])
		self.labelContCodMin.set_text(cod)
		self.aba1.put(self.labelContCodMin, 160,30)
		if int(cod) > 0:
			sql = "SELECT * FROM produtos WHERE quantidade < minimo+1"
			self.sqlCursor.execute(sql)
			dados = self.sqlCursor.fetchall() 
			self.treeview(None)
			" adiciona os dados da pesquisa ao TreeView "
			model = self.treevAba1.get_model()
			model.clear()
			for linha in dados:
				model.append([linha[0], linha[1], linha[2], linha[3], linha[4], linha[5], linha[6]])
	
	def atualizaChecaProduto(self, widget):
		sql = "SELECT COUNT(codigo) FROM produtos"
		self.sqlCursor.execute(sql)
		contCod = self.sqlCursor.fetchone()
		cod = str(contCod[0])
		self.labelContCod.set_text(cod)
		self.notebook.set_current_page(0)
	
	def atualizaChecaMinimo(self, widget):
		self.aba = 1
		" checa a quantidade de produtos cadastrados com valor igual ou menor que o minimo"
		sql = "SELECT COUNT(codigo) FROM produtos WHERE quantidade < minimo+1"
		self.sqlCursor.execute(sql)
		contCodMin = self.sqlCursor.fetchone()
		cod = str(contCodMin[0])
		self.labelContCodMin.set_text(cod)
		" Limpa o Treeview "
		model = self.treevAba1.get_model()
		model.clear()
		if int(cod) > 0:
			sql = "SELECT * FROM produtos WHERE quantidade < minimo+1"
			self.sqlCursor.execute(sql)
			dados = self.sqlCursor.fetchall()
			self.treeview(None)
			" adiciona os dados da pesquisa ao TreeView "
			for linha in dados:
				model.append([linha[0], linha[1], linha[2], linha[3], linha[4], linha[5], linha[6]])
			
		
	def delete(self, widget):
		valor = self.treevAba4.get_cursor()
		n = valor[0]
		if n == None:
			msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Nenhum produto selecionado para Exclusão')
			msg.set_position(gtk.WIN_POS_CENTER)
			resposta = msg.run()
			msg.destroy()
		else:	
			msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, 'Deseja excluir o registro ?')
			msg.set_position(gtk.WIN_POS_CENTER)
			resposta = msg.run()
			if resposta == gtk.RESPONSE_YES:
				sql = self.tempSQL
				self.sqlCursor.execute(sql)
				resultado = self.sqlCursor.fetchall()
				i = 0
				t1 = range(1)
				for linha in resultado:
					t1[0] = i
					t2 = n
					if t1[0] == t2[0]:
						sql = "DELETE FROM produtos WHERE codigo = %s" % (linha[0])
						self.sqlCursor.execute(sql)
						self.sqlConnect.commit()
					i = i+1
			self.pesquisar(None)
			msg.destroy()
	
	def formAltera(self, widget):
		valor = self.treevAba4.get_cursor()
		n = valor[0]
		if n == None:
			msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Nenhum produto selecionado para Alteração')
			msg.set_position(gtk.WIN_POS_CENTER)
			resposta = msg.run()
			msg.destroy()
		else:
			self.notebook.set_current_page(4)
			sql = self.tempSQL
			self.sqlCursor.execute(sql)
			resultado = self.sqlCursor.fetchall()
			i = 0
			t1 = range(1)
			for linha in resultado:
				t1[0] = i
				t2 = n
				if t1[0] == t2[0]:
					" Preenchendo os campos do formulário de alteração "
					self.altCodigo = linha[0]
					self.altDescricao.props.text = linha[1]
					self.altMarca.props.text = linha[2]
					self.altModelo.props.text = linha[3]
					self.altValor.props.text = linha[4]
					self.altQuantidade.props.text = linha[5]
					self.altMinimo.props.text = linha[6]
				i = i+1
		
	def salvarAlteracao(self, widget):
		codigo = self.altCodigo
		descricao = self.altDescricao.props.text
		marca = self.altMarca.props.text
		modelo = self.altModelo.props.text
		valor = self.altValor.props.text
		quantidade = self.altQuantidade.props.text
		minimo = self.altMinimo.props.text
		try:
			valorInt = complex(valor)
			quantidadeInt = int(quantidade)
			minimoInt = int(minimo)
		except ValueError:
			msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Preencha os campos corretamente')
			msg.set_position(gtk.WIN_POS_CENTER)
			resposta = msg.run()
			msg.destroy()
		else:
			sql = "UPDATE produtos SET descricao = '%s', marca = '%s', modelo = '%s', valor = '%s', quantidade = '%s', minimo = '%s' WHERE codigo = %s" %(descricao, marca, modelo, valor, quantidade, minimo, codigo)
			self.sqlCursor.execute(sql)
			self.sqlConnect.commit()
			self.sqlConnect.commit()
			sql = "SELECT * FROM produtos WHERE codigo = %s" % (codigo)
			self.sqlCursor.execute(sql)
			dados = self.sqlCursor.fetchone()
			if str(descricao) == str(dados[1]) and str(marca) == str(dados[2]) and str(modelo) == str(dados[3]) and str(valor) == str(dados[4]) and str(quantidade) == str(dados[5]) and str(minimo) == str(dados[6]):
				msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Produto Alterado com sucesso.')
				msg.set_position(gtk.WIN_POS_CENTER)
				resposta = msg.run()
				msg.destroy()
				self.atualizaChecaMinimo(None)
				self.atualizaChecaProduto(None)
				self.notebook.set_current_page(0)
			else:
				msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, 'Não foi possivel alterar o produto.')
				msg.set_position(gtk.WIN_POS_CENTER)
				resposta = msg.run()
				msg.destroy()
				self.notebook.set_current_page(0)
	
	
	def popupAdd(self, widget):
		valor = self.treevAba4.get_cursor()
		n = valor[0]
		if n == None:
			msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Nenhum produto selecionado para Adição')
			msg.set_position(gtk.WIN_POS_CENTER)
			resposta = msg.run()
			msg.destroy()
		else:
			" Cria um Dialogo "
			self.dialogAdd = gtk.Dialog("Estoque")
			self.dialogAdd.set_position(gtk.WIN_POS_CENTER)
			hbox = gtk.HBox(False, 1)
			hbox.set_border_width(50)
			
			frame = gtk.Frame()
			frame.set_label("ENTRADA")
			frame.set_size_request(200,130)
			
			fixed = gtk.Fixed()
			frame.add(fixed)
			fixed.put(gtk.Label('Quantidade: '),10,10)
			self.quantidadeAdd = gtk.Entry()
			fixed.put(self.quantidadeAdd, 10,30)
			botao = gtk.Button(stock=gtk.STOCK_ADD)
			botao.connect("clicked", self.produtoAdd)
			fixed.put(botao, 50,60)
			
			self.dialogAdd.vbox.pack_start(frame)
			self.dialogAdd.show_all()
	
	def popupRemove(self, widget):
		valor = self.treevAba4.get_cursor()
		n = valor[0]
		if n == None:
			msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Nenhum produto selecionado para Subtração')
			msg.set_position(gtk.WIN_POS_CENTER)
			resposta = msg.run()
			msg.destroy()
		else:
			" Cria um Dialogo "
			self.dialogRemove = gtk.Dialog("Estoque")
			self.dialogRemove.set_position(gtk.WIN_POS_CENTER)
			hbox = gtk.HBox(False, 1)
			hbox.set_border_width(50)
			
			frame = gtk.Frame()
			frame.set_label("SAIDA")
			frame.set_size_request(200,130)
			
			fixed = gtk.Fixed()
			frame.add(fixed)
			fixed.put(gtk.Label('Quantidade: '),10,10)
			self.quantidadeRemove = gtk.Entry()
			fixed.put(self.quantidadeRemove, 10,30)
			botao = gtk.Button(stock=gtk.STOCK_REMOVE)
			botao.connect("clicked", self.produtoRemove)
			fixed.put(botao, 50,60)
			
			self.dialogRemove.vbox.pack_start(frame)
			self.dialogRemove.show_all()
	
	def produtoAdd(self, widget):
		valorAdd = self.quantidadeAdd.props.text
		try:
			valorAddInt = int(valorAdd)
		except ValueError:
			msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Deve ser digitado um numero inteiro')
			msg.set_position(gtk.WIN_POS_CENTER)
			resposta = msg.run()
			msg.destroy()
		else:
			" pegando as seleções "
			selecoes = self.treevAba4.get_selection()
			selecoes.set_mode(gtk.SELECTION_MULTIPLE)
			" Pegando a linha selecionada "
			modelo, caminhos = selecoes.get_selected_rows()
			for caminho in caminhos:
				kiter = modelo.get_iter(caminho)
				cod = modelo.get_value(kiter,0)
				sql = "UPDATE produtos SET quantidade = quantidade + %s WHERE codigo = %s" % (valorAdd, cod)
				self.sqlCursor.execute(sql)
				self.sqlConnect.commit()
				self.dialogAdd.destroy()
				self.pesquisar(None)
	
	def produtoRemove(self, widget):
		valorRemove = self.quantidadeRemove.props.text
		try:
			valorRemoveInt = int(valorRemove)
		except ValueError:
			msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Deve ser digitado um numero inteiro')
			msg.set_position(gtk.WIN_POS_CENTER)
			resposta = msg.run()
			msg.destroy()
		else:
			" pegando as seleções "
			selecoes = self.treevAba4.get_selection()
			selecoes.set_mode(gtk.SELECTION_MULTIPLE)
			" Pegando a linha selecionada "
			modelo, caminhos = selecoes.get_selected_rows()
			for caminho in caminhos:
				kiter = modelo.get_iter(caminho)
				cod = modelo.get_value(kiter,0)
				sql = "UPDATE produtos SET quantidade = quantidade - %s WHERE codigo = %s" % (valorRemove, cod)
				self.sqlCursor.execute(sql)
				self.sqlConnect.commit()
				self.dialogRemove.destroy()
				self.pesquisar(None)
	
	def deleteEvento(self, widget, event, data=None):
		return False
	
	def sair(self, widget, data=None):
		gtk.main_quit()
	
	def main(self):
		gtk.main()

if __name__ == "__main__":
	estoque = estoque()
	estoque.main()
